/** @jsxImportSource @emotion/react */
import * as React from "react";
import {  OriginalViewProps,  } from "../../common/base";
import {config设备概况, EntranceSetup} from "./orcBase";
import { createItem,  } from "../../common/eHelper";
import { useRecordListSubr} from "../../hook/useRecordListSub";
import {DeviceSurvey} from "../../elevator/editor";
import {PropertySolidify} from "../../industrial/EditorFeature";
import {SingleLineDiagram} from "../../industrial/editorLineDg";
import {ProjectListNj } from "../../industrial/Projects";
import {ConclusionGasC} from "../editorJj";
import {SiteConstruct, } from "../editorOnsite";
import {NonDestructive, WeldingQualif} from "../editorOQuaf";
import {JobResponsibili} from "../editorJobr";
import {ProblemHandle} from "../editorProb";
import {QualityAssure} from "../QualityAssure";
import {config证书概要} from "../editorCert";
import {ThreeConfigRaft} from "../editor";
import {IPipingUnitEntity} from "../../../comp/ChoosePipingUnits";


/**@property na : 表示不在结论附录(检验项目表)当中出现的吗，但都出现在目录中的。
 * @property zs : 【新增加特性参数】表示可跟着证书走显示在封面前面，却不出现在目录中的。{还根据结论分辨}	"result":"合格,不合格",
 * @property ml : 该分项在目录中的文本显示题目。
 * '管道特性表' 可以跟着证书走，目录也不因此显示出。
 * 菜单上的按钮内容不能太长:手机上可能对第二层菜单显示有问题。需约束name字符数。
 * */
export const Projects默认=[{name:'公用燃气管道施工监督检验结论报告',do:true,ha:'Conclusion'},
  {name:'受检单位基本情况及现场施工情况报告',ha:'SiteConstruct'},
  {name:'现场焊接作业人员资格明细表',ha:'WeldingQualif'},
  {name:'无损检测人员资格明细表',ha:'NonDestructive'},
  {name:'监检工作内容和检验结果报告',ha:'JobResponsibili1'},
  {name:'监检过程中发现问题的处理情况报告',ha:'ProblemHandle'},
  {name:'施工单位质量保证体系实施状况评价',ml:'公用燃气管道施工单位质量保证体系实施状况评价报告',ha:'QualityAssure'},
  {name:'管道特性表',do:true,ha:'Characteristics',zs:true},
  {name:'管道单线图',ha:'PipeLineDiagram',},
];


//【承压类的：就不考虑打印】原始记录，一一对应的报告的录入编辑数据，可打印。
//不需要每个verId新搞一个文件的，甚至不需要搞新的组件，可以只需内部逻辑处理。
//分离模式，编辑器脱离不在报告项目文本页面上面组装也就是原位置变换编辑框框或弹出模态对话框来输入的，把编辑器独立分离，点击一块区域路由器跳转独立的编辑页面，不一定一次跳转只针对单一行也能合并多行一起来编辑的。
//自定义路由器的配置拆分URL?action映射到页面组件；对应某报告模板下所有编辑修改组件；原始记录打印展示全部列表。項目標記符不能用ALL none preview printAll item1.1保留字。
//路由名字是非中文的且不可以包含"/"保留符号的。若是【独立模板编码】的分项报告不在这里列出的。
const recordPrintList =[
  createItem('Entrance', <EntranceSetup/>),
  createItem('ProjectList', <ProjectListNj  projects={Projects默认}/>),
  createItem('Survey', <DeviceSurvey config={config设备概况} label={'施工监督检验结论报告-设备概况'}/>),
  createItem('Conclusion', <ConclusionGasC label={'结论报告-下结论'}/>),
  createItem('SiteConstruct', <SiteConstruct label={'受检单位基本情况及现场施工情况报告'}/>),
  createItem('WeldingQualif', <WeldingQualif label={'现场焊接作业人员资格明细表'}/>),
  createItem('NonDestructive', <NonDestructive label={'无损检测人员资格明细表'}/>),
  createItem('JobResponsibili1', <JobResponsibili label={'监检工作内容和检验结果报告, 1-11'} part={0}/>),
  createItem('JobResponsibili2', <JobResponsibili label={'监检工作内容和检验结果报告, 12-21'} part={1}/>),
  createItem('JobResponsibili3', <JobResponsibili label={'监检工作内容和检验结果报告, 22-28备注'} part={2}/>),
  createItem('ProblemHandle', <ProblemHandle label={'监检过程中发现问题的处理情况报告'}/>),
  createItem('QualityAssure', <QualityAssure label={'公用燃气管道施工单位质量保证体系实施状况评价报告'}/>),
  // createItem('CertificateSummary', <DeviceSurvey config={config证书概要} label={'特种设备监督检验证书'}/>),
  createItem('CertificateSummary', <ThreeConfigRaft config={config证书概要} label={'特种设备监督检验证书'}>
        </ThreeConfigRaft>),
  createItem('Solidify', <PropertySolidify label={'管道特性表-管理器'} filterCB={modelToRepData}/>),
  createItem('LineDiagram', <SingleLineDiagram />),
  createItem('_Controller',  <></>),
];


//从Relay模型获取报告才需要的字段：svp pa只保存有用到的字段：节约存储
function modelToRepData(pipe:IPipingUnitEntity){
  const {id,crDate,name,code,leng,level,start,stop,lay,thik,rno,dia,svp,pa}=pipe as any;
  const {材料,设压,设温,直径}=svp;
  const {工介,工压,工温,图号}=pa;
  return { id,crDate, name,code,leng,level,start,stop,lay,thik,rno,dia,
    svp:{材料,设压,设温,直径},
    pa:{工介,工压,工温,图号}
  };
}

//forwardRef实际上已经没用了，ref，也可改成简易组件模式。
//编辑器右半边页面的组织显示，可自定义，action路由自己构造。编辑器保存通过EditStorageContext来统一做。
//注意storage,outCome的报告存储字段名称唯一性要求！【实际上】单个区单项目编辑没必要加ref=clRefs[]就能够保存数据，全部ALL显示的才用到传递和保存。
//从RecordStarter延续来这里增加态路由赋值的qs参数，recordList= React.useMemo([,qs])配合更新，才能够真正做到点击切换ProjectList?from=5后面的from参数变动可以立刻引起编辑器组件显示内容的render立刻同步变化显示。
export const OriginalView=
  React.forwardRef((
    { action: modAction,  verId, repId='', rep}
    :OriginalViewProps, ref
  ) => {
    const {list}=useRecordListSubr(ref,rep,recordPrintList,modAction,verId);
    return <React.Fragment>
      {list}
    </React.Fragment>;
  } );

